﻿using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace Projeto
{
    class PoolConexoes
    {
        //@ para reconhecer o caminho
        String caminho = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Gabriel\Desktop\Nautical\Nautical\branch\Projeto\DatabaseEstoque.mdf;Integrated Security=True;User Instance=True";
        
        //String caminho =  Projeto.Properties.Settings.Default.DatabaseEstoqueConnectionString;

        //METODO INSERE NOVO USUARIO
        public bool insertUsuario(Usuario usuario)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Usuario(matricula, nome, endereco, telefone, rg, cpf, sexo, login, senha, permissao) " +
                             " values (@matricula, @nome, @endereco, @telefone, @rg, @cpf, @sexo, @login, @senha, @permissao) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("matricula", usuario.Matricula);
                comando.Parameters.AddWithValue("nome", usuario.Nome);
                comando.Parameters.AddWithValue("endereco", usuario.Endereco);
                comando.Parameters.AddWithValue("telefone", usuario.Telefone);
                comando.Parameters.AddWithValue("rg", usuario.Rg);
                comando.Parameters.AddWithValue("cpf", usuario.Cpf);
                comando.Parameters.AddWithValue("sexo", usuario.Sexo);
                comando.Parameters.AddWithValue("login", usuario.Login);
                comando.Parameters.AddWithValue("senha", usuario.Senha);
                comando.Parameters.AddWithValue("permissao", usuario.Permissao);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO INSERE NOVO COLABORADOR
        public bool insertColaborador(Colaborador colaborador)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Colaborador(codColaborador, nome, endereco, telefone, rg, cpf, sexo, observacao) " +
                             " values (@codColaborador, @nome, @endereco, @telefone, @rg, @cpf, @sexo, @observacao) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codColaborador", colaborador.CodColaborador);
                comando.Parameters.AddWithValue("nome", colaborador.Nome);
                comando.Parameters.AddWithValue("endereco", colaborador.Endereco);
                comando.Parameters.AddWithValue("telefone", colaborador.Telefone);
                comando.Parameters.AddWithValue("rg", colaborador.Rg);
                comando.Parameters.AddWithValue("cpf", colaborador.Cpf);
                comando.Parameters.AddWithValue("sexo", colaborador.Sexo);
                comando.Parameters.AddWithValue("observacao", colaborador.Observacao);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO INSERE NOVO TITULO A PAGAR
        public bool inserTituloPagar(TituloPagar conta)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Titulo_Pagar(codTitulo, serie, descTitulo, dtVencimento, codFornecedor, situacao, observacao, valor) " +
                             " values (@codTitulo, @serie, @descTitulo, @dtVencimento, @codFornecedor, @situacao, @observacao, @valor) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codTitulo", conta.CodTitulo);
                comando.Parameters.AddWithValue("serie", conta.Serie);
                comando.Parameters.AddWithValue("descTitulo", conta.Descricao);
                comando.Parameters.AddWithValue("dtVencimento", conta.DtVencimento);
                comando.Parameters.AddWithValue("codFornecedor", conta.CodFornecedor);
                comando.Parameters.AddWithValue("situacao", conta.Situacao);
                comando.Parameters.AddWithValue("observacao", conta.Observacao);
                comando.Parameters.AddWithValue("valor", conta.Valor);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO INSERE NOVO TITULO A RECEBER
        public bool inserTituloReceber(TituloReceber conta)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Titulo_Receber(codTitulo, serie, descTitulo, dtVencimento, codFornecedor, situacao, observacao, valor) " +
                             " values (@codTitulo, @serie, @descTitulo, @dtVencimento, @codFornecedor, @situacao, @observacao, @valor) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codTitulo", conta.CodTitulo);
                comando.Parameters.AddWithValue("serie", conta.Serie);
                comando.Parameters.AddWithValue("descTitulo", conta.Descricao);
                comando.Parameters.AddWithValue("dtVencimento", conta.DtVencimento);
                comando.Parameters.AddWithValue("codFornecedor", conta.CodFornecedor);
                comando.Parameters.AddWithValue("situacao", conta.Situacao);
                comando.Parameters.AddWithValue("observacao", conta.Observacao);
                comando.Parameters.AddWithValue("valor", conta.Valor);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO INSERE NOVO PRODUTO
        public bool insertProduto(Produto produto)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Produto(codProduto, nome, descricao, tipoUnidade, observacao, valorUnitario, codFornecedor) " +
                             " values (@codProduto, @nome, @descricao, @tipoUnidade, @observacao, @valorUnitario, @codFornecedor) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codProduto", produto.CodProduto);
                comando.Parameters.AddWithValue("nome", produto.Nome);
                comando.Parameters.AddWithValue("descricao", produto.Descricao);
                comando.Parameters.AddWithValue("valorUnitario", produto.ValorUnitario);
                comando.Parameters.AddWithValue("tipoUnidade", produto.TpUnidade);
                comando.Parameters.AddWithValue("observacao", produto.Observacao);
                comando.Parameters.AddWithValue("codFornecedor", produto.CodFornecedor);


                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO BUSCA LOGIN TENDO COMO PARAMETRO LOGIN E SENHA
        public Usuario getLogin(String login, String senha)
        {
            Usuario usuario = new Usuario();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = " Select * From Usuario Where login = '" + login
                       + "' AND senha = '" + senha + "'";

            try
            {

                SqlCommand comando = new SqlCommand(sql, conexao);
                SqlDataReader dr = comando.ExecuteReader();

                while (dr.Read())
                {
                    usuario.Matricula = dr[0].ToString();
                    usuario.Nome = dr[1].ToString();
                    usuario.Endereco = dr[2].ToString();
                    usuario.Telefone = dr[3].ToString();
                    usuario.Rg = dr[4].ToString();
                    usuario.Cpf = dr[5].ToString();
                    usuario.Sexo = dr[6].ToString();
                    usuario.Login = dr[7].ToString();
                    usuario.Senha = dr[8].ToString();
                    usuario.Permissao = dr[9].ToString();
                }
            }
            catch (Exception)
            {

                conexao.Close();
                return null;
            }

            conexao.Close();
            return usuario;

        }

        //METODO INSERE NOVA SENHA
        public void insertNewPassword(String novaSenha, String matricula)
        {
            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "insert into Usuario (Password) values (@novaSenha) ";
            SqlCommand comando = new SqlCommand(sql, conexao);
            comando.Parameters.AddWithValue("novaSenha", novaSenha);

            comando.ExecuteNonQuery();

            conexao.Close();
        }

        //METODO BUSCA PRODUTO TENDO COM PARAMETRO COD_PRODUTO
        public ArrayList getProdutos(String codProduto)
        {

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Produto";

            if (codProduto != null && !codProduto.Equals(""))
            {
                sql += " WHERE codProduto = '" + codProduto + "'";
            }


            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            ArrayList arrProdutos = new ArrayList();

            while (dr.Read())
            {

                Produto produto = new Produto();

                produto.CodProduto = dr[0].ToString();
                produto.Nome = dr[1].ToString();
                produto.Descricao = dr[2].ToString();
                produto.ValorUnitario = dr[3].ToString();
                produto.TpUnidade = dr[4].ToString();
                produto.Observacao = dr[5].ToString();
                produto.CodFornecedor = dr[6].ToString();

                arrProdutos.Add(produto);
            }

            return arrProdutos;
        }

        //METODO BUSCA USUARIO TENDO COMO PARAMETRO MATRICULA E NOME
        public ArrayList getUsuario(String matricula, String nome)
        {

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Usuario WHERE 1=1 ";
        
            if (!matricula.Equals(""))
            {
                sql += " AND matricula = " + matricula;
            }

            if (!nome.Equals(""))
            {
                sql += " AND nome LIKE '%" + nome + "%'";
            }

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            ArrayList arrUsuario = new ArrayList();

            while (dr.Read())
            {

                Usuario usuario = new Usuario();

                usuario.Matricula = dr[0].ToString();
                usuario.Nome = dr[1].ToString();
                usuario.Endereco = dr[2].ToString();
                usuario.Telefone = dr[3].ToString();
                usuario.Rg = dr[4].ToString();
                usuario.Cpf = dr[5].ToString();
                usuario.Sexo = dr[6].ToString();
                usuario.Login = dr[7].ToString();
                usuario.Senha = dr[8].ToString();
                usuario.Permissao = dr[9].ToString();


                arrUsuario.Add(usuario);
            }

            return arrUsuario;
        }

        //METODO BUSCA COLABORADOR TENDO COMO PARAMETRO CODCOLABORADOR E NOME
        public ArrayList getColaborador(String codColaborador, String nome)
        {

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Colaborador WHERE 1=1 ";

            if (!codColaborador.Equals(""))
            {
                sql += " AND codColaborador = " + codColaborador;
            }

            if (!nome.Equals(""))
            {
                sql += " AND nome LIKE '%" + nome + "%'";
            }

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            ArrayList arrColaborador = new ArrayList();

            while (dr.Read())
            {

                Colaborador colaborador = new Colaborador();

                colaborador.CodColaborador = dr[0].ToString();
                colaborador.Nome = dr[1].ToString();
                colaborador.Endereco = dr[2].ToString();
                colaborador.Telefone = dr[3].ToString();
                colaborador.Rg = dr[4].ToString();
                colaborador.Cpf = dr[5].ToString();
                colaborador.Sexo = dr[6].ToString();
                colaborador.Observacao = dr[7].ToString();

                arrColaborador.Add(colaborador);
            }

            return arrColaborador;
        }

        //METODO BUSCA USUARIO TENDO COMO PARAMETRO MATRICULA
        public Usuario getUsuario(String matricula)
        {

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Usuario WHERE matricula = " + matricula;

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            Usuario usuario = null;

            while (dr.Read())
            {
                usuario = new Usuario();

                usuario.Matricula = dr[0].ToString();
                usuario.Nome = dr[1].ToString();
                usuario.Endereco = dr[2].ToString();
                usuario.Telefone = dr[3].ToString();
                usuario.Rg = dr[4].ToString();
                usuario.Cpf = dr[5].ToString();
                usuario.Sexo = dr[6].ToString();
                usuario.Login = dr[7].ToString();
                usuario.Senha = dr[8].ToString();
                usuario.Permissao = dr[9].ToString();

            }

            return usuario;
        }

        //METODO BUSCA COLABORADOR TENDO COMO PARAMETRO CODCOLABORADOR
        public Colaborador getColaborador(String codColaborador)
        {

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Colaborador WHERE codColaborador = " + codColaborador;

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            Colaborador colaborador = null;

            while (dr.Read())
            {
                colaborador = new Colaborador();

                colaborador.CodColaborador = dr[0].ToString();
                colaborador.Nome = dr[1].ToString();
                colaborador.Endereco = dr[2].ToString();
                colaborador.Telefone = dr[3].ToString();
                colaborador.Rg = dr[4].ToString();
                colaborador.Cpf = dr[5].ToString();
                colaborador.Sexo = dr[6].ToString();
                colaborador.Observacao = dr[7].ToString();

            }

            return colaborador;
        }

        //METODO PARA UPDATE USUARIO
        public Boolean updateUsuario(Usuario usuario)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "update Usuario set matricula = @matricula, nome = @nome, endereco = @endereco, telefone = @telefone, rg = @rg, cpf = @cpf," +
                " sexo = @sexo, login = @login, senha = @senha, permissao = @permissao " +
                " WHERE matricula = '" + usuario.Matricula + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("matricula", usuario.Matricula);
                comando.Parameters.AddWithValue("nome", usuario.Nome);
                comando.Parameters.AddWithValue("endereco", usuario.Endereco);
                comando.Parameters.AddWithValue("telefone", usuario.Telefone);
                comando.Parameters.AddWithValue("rg", usuario.Rg);
                comando.Parameters.AddWithValue("cpf", usuario.Cpf);
                comando.Parameters.AddWithValue("sexo", usuario.Sexo);
                comando.Parameters.AddWithValue("login", usuario.Login);
                comando.Parameters.AddWithValue("senha", usuario.Senha);
                comando.Parameters.AddWithValue("permissao", usuario.Permissao);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //METODO PARA ATUALIZAR COLABORADOR
        public Boolean updateColaborador(Colaborador colaborador)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "update Colaborador set codColaborador = @codColaborador, nome = @nome, endereco = @endereco, telefone = @telefone, rg = @rg, cpf = @cpf," +
                " sexo = @sexo, observacao = @observacao " +
                " WHERE codColaborador = '" + colaborador.CodColaborador + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codColaborador", colaborador.CodColaborador);
                comando.Parameters.AddWithValue("nome", colaborador.Nome);
                comando.Parameters.AddWithValue("endereco", colaborador.Endereco);
                comando.Parameters.AddWithValue("telefone", colaborador.Telefone);
                comando.Parameters.AddWithValue("rg", colaborador.Rg);
                comando.Parameters.AddWithValue("cpf", colaborador.Cpf);
                comando.Parameters.AddWithValue("sexo", colaborador.Sexo);
                comando.Parameters.AddWithValue("observacao", colaborador.Observacao);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //METODO BUSCA PRODUTO ESPECIFICO
        public Produto getProduto(String codProduto)
        {
            Produto produto = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Produto WHERE codProduto = '" + codProduto + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                produto = new Produto();

                produto.CodProduto = dr[0].ToString();
                produto.Nome = dr[1].ToString();
                produto.Descricao = dr[2].ToString();
                produto.ValorUnitario = dr[3].ToString();
                produto.TpUnidade = dr[4].ToString();
                produto.Observacao = dr[5].ToString();
                produto.CodFornecedor = dr[6].ToString();

            }

            return produto;
        }

        //METODO PARA UPDATE DO PRODUTO
        public Boolean updateProduto(Produto produto)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "UPDATE Produto  SET " +
                    " codProduto = @codProduto, nome = @nome, descricao = @descricao, " +
                    " valorUnitario = @valorUnitario, tipoUnidade = @tipoUnidade, observacao = @observacao, codFornecedor = @codFornecedor" +
                    " WHERE codProduto = '" + produto.CodProduto + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codProduto", produto.CodProduto);
                comando.Parameters.AddWithValue("nome", produto.Nome);
                comando.Parameters.AddWithValue("descricao", produto.Descricao);
                comando.Parameters.AddWithValue("valorUnitario", produto.ValorUnitario);
                comando.Parameters.AddWithValue("tipoUnidade", produto.TpUnidade);
                comando.Parameters.AddWithValue("observacao", produto.Observacao);
                comando.Parameters.AddWithValue("codFornecedor", produto.CodFornecedor);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO ATUALIZA TITULO
        public Boolean updateTituloPagar(TituloPagar conta)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "UPDATE Titulo_Pagar  SET " +
                    " codTitulo = @codTitulo, serie = @serie, descTitulo = @descTitulo, dtVencimento = @dtVencimento, " +
                    " codFornecedor = @codFornecedor,  situacao = @situacao, observacao = @observacao, valor = @valor " +
                    " WHERE codTitulo = '" + conta.CodTitulo + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codTitulo", conta.CodTitulo);
                comando.Parameters.AddWithValue("serie", conta.Serie);
                comando.Parameters.AddWithValue("descTitulo", conta.Descricao);
                comando.Parameters.AddWithValue("dtVencimento", conta.DtVencimento);
                comando.Parameters.AddWithValue("codFornecedor", conta.CodFornecedor);
                comando.Parameters.AddWithValue("situacao", conta.Situacao);
                comando.Parameters.AddWithValue("observacao", conta.Observacao);
                comando.Parameters.AddWithValue("valor", conta.Valor);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO ATUALIZA TITULO
        public Boolean updateTituloReceber(TituloReceber conta)
        {

            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "UPDATE Titulo_Receber  SET " +
                    " codTitulo = @codTitulo, serie = @serie, descTitulo = @descTitulo, dtVencimento = @dtVencimento, " +
                    " codFornecedor = @codFornecedor,  situacao = @situacao, observacao = @observacao, valor = @valor " +
                    " WHERE codTitulo = '" + conta.CodTitulo + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codTitulo", conta.CodTitulo);
                comando.Parameters.AddWithValue("serie", conta.Serie);
                comando.Parameters.AddWithValue("descTitulo", conta.Descricao);
                comando.Parameters.AddWithValue("dtVencimento", conta.DtVencimento);
                comando.Parameters.AddWithValue("codFornecedor", conta.CodFornecedor);
                comando.Parameters.AddWithValue("situacao", conta.Situacao);
                comando.Parameters.AddWithValue("observacao", conta.Observacao);
                comando.Parameters.AddWithValue("valor", conta.Valor);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO INSERE NOVOS REGISTRO NO ESTOQUE
        public bool insertEntradaEstoque(Estoque estoque)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Estoque(codProduto, descricao, quantidade, valorUnitario, valorTotal) " +
                             " values (@codProduto, @descricao, @quantidade, @valorUnitario, @valorTotal) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codProduto", estoque.CodProduto);
                comando.Parameters.AddWithValue("descricao", estoque.Descricao);
                comando.Parameters.AddWithValue("quantidade", estoque.Quantidade);
                comando.Parameters.AddWithValue("valorUnitario", estoque.ValorUnitario);
                comando.Parameters.AddWithValue("valorTotal", estoque.ValorTotal);
                
                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //RETORNA REGISTRO DE UM PRODUTO NO ESTOQUE
        public Estoque getEstoque(String codProduto)
        {
            Estoque produtoEstoque = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Estoque WHERE codProduto = '" + codProduto + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                produtoEstoque = new Estoque();

                produtoEstoque.CodProduto = dr[0].ToString();
                produtoEstoque.Descricao = dr[1].ToString();
                produtoEstoque.Quantidade = dr[2].ToString();
                produtoEstoque.ValorUnitario = dr[3].ToString();
                produtoEstoque.ValorTotal = dr[4].ToString();
            
            }

            return produtoEstoque;
        }

        //METODO RETORNA TITULO A PAGAR
        public TituloPagar getTituloPagar(String codTitulo)
        {
            TituloPagar conta = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Titulo_Pagar WHERE codTitulo = '" + codTitulo + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                conta = new TituloPagar();

                conta.CodTitulo = dr[0].ToString();
                conta.Serie = dr[1].ToString();
                conta.Descricao = dr[2].ToString();
                conta.DtVencimento = dr[3].ToString();
                conta.CodFornecedor = dr[4].ToString();
                conta.Situacao = dr[5].ToString();
                conta.Observacao = dr[6].ToString();
                conta.Valor = dr[7].ToString();

            }

            return conta;
        }

        //METODO RETORNA TITULO A PAGAR
        public TituloReceber getTituloReceber(String codTitulo)
        {
            TituloReceber conta = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Titulo_Receber WHERE codTitulo = '" + codTitulo + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                conta = new TituloReceber();

                conta.CodTitulo = dr[0].ToString();
                conta.Serie = dr[1].ToString();
                conta.Descricao = dr[2].ToString();
                conta.DtVencimento = dr[3].ToString();
                conta.CodFornecedor = dr[4].ToString();
                conta.Situacao = dr[5].ToString();
                conta.Observacao = dr[6].ToString();
                conta.Valor = dr[7].ToString();

            }

            return conta;
        }

        //METODO CARREGA TITULO PELO CODTITULO E SERIE
        public TituloPagar getTituloPagar(String codTitulo, String serie)
        {
            TituloPagar conta = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Titulo_Pagar WHERE codTitulo = '" + codTitulo + "' and serie = '" + serie + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                conta = new TituloPagar();

                conta.CodTitulo = dr[0].ToString();
                conta.Serie = dr[1].ToString();
                conta.Descricao = dr[2].ToString();
                conta.DtVencimento = dr[3].ToString();
                conta.CodFornecedor = dr[4].ToString();
                conta.Situacao = dr[5].ToString();
                conta.Observacao = dr[6].ToString();
                conta.Valor = dr[7].ToString();

            }

            return conta;
        }

        //METODO CARREGA TITULO PELO CODTITULO E SERIE
        public TituloReceber getTituloReceber(String codTitulo, String serie)
        {
            TituloReceber conta = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Titulo_Receber WHERE codTitulo = '" + codTitulo + "' and serie = '" + serie + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                conta = new TituloReceber();

                conta.CodTitulo = dr[0].ToString();
                conta.Serie = dr[1].ToString();
                conta.Descricao = dr[2].ToString();
                conta.DtVencimento = dr[3].ToString();
                conta.CodFornecedor = dr[4].ToString();
                conta.Situacao = dr[5].ToString();
                conta.Observacao = dr[6].ToString();
                conta.Valor = dr[7].ToString();

            }

            return conta;
        }

        //METODO RETORNA LISTA DE TITULOS A PAGAR
        public ArrayList getTitulosPagar()
        {
            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Titulo_Pagar";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                TituloPagar conta = new TituloPagar();

                conta.CodTitulo = dr[0].ToString();
                conta.Serie = dr[1].ToString();
                conta.Descricao = dr[2].ToString();
                conta.DtVencimento = dr[3].ToString();
                conta.CodFornecedor = dr[4].ToString();
                conta.Situacao = dr[5].ToString();
                conta.Observacao = dr[6].ToString();
                conta.Valor = dr[7].ToString();

                lista.Add(conta);
            }

            return lista;


        }

        //METODO RETORNA LISTA DE TITULOS A RECEBER
        public ArrayList getTitulosReceber()
        {
            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Titulo_Receber";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                TituloPagar conta = new TituloPagar();

                conta.CodTitulo = dr[0].ToString();
                conta.Serie = dr[1].ToString();
                conta.Descricao = dr[2].ToString();
                conta.DtVencimento = dr[3].ToString();
                conta.CodFornecedor = dr[4].ToString();
                conta.Situacao = dr[5].ToString();
                conta.Observacao = dr[6].ToString();
                conta.Valor = dr[7].ToString();

                lista.Add(conta);
            }

            return lista;


        }

        //METODO ATUALIZA O ESTOQUE
        public Boolean updateEstoque(Estoque estoque)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "UPDATE Estoque  SET " +
                    " codProduto = @codProduto, descricao = @descricao, " +
                    " quantidade = @quantidade, valorUnitario = @valorUnitario, valorTotal = @valorTotal" +
                    " WHERE codProduto = '" + estoque.CodProduto + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codProduto", estoque.CodProduto);
                comando.Parameters.AddWithValue("descricao", estoque.Descricao);
                comando.Parameters.AddWithValue("quantidade", estoque.Quantidade);
                comando.Parameters.AddWithValue("valorUnitario", estoque.ValorUnitario);
                comando.Parameters.AddWithValue("valorTotal", estoque.ValorTotal);
                
                comando.ExecuteNonQuery();

            }
            catch (Exception) {
                return false;
            }

            return true;
        }

        //METODO REGISTRA OS MOVIMENTOS DO ESTOQUE (ENTRADA/SAIDA)
        public bool insertRelatorioEstoque(EstoqueRelatorio estoque)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Estoque_Relatorio(codProduto, descricao, quantidade, valorUnitario, valorTotal, movimentacao) " +
                             " values (@codProduto, @descricao, @quantidade, @valorUnitario, @valorTotal, @movimentacao) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codProduto", estoque.CodProduto);
                comando.Parameters.AddWithValue("descricao", estoque.Descricao);
                comando.Parameters.AddWithValue("quantidade", estoque.Quantidade);
                comando.Parameters.AddWithValue("valorUnitario", estoque.ValorUnitario);
                comando.Parameters.AddWithValue("valorTotal", estoque.ValorTotal);
                comando.Parameters.AddWithValue("movimentacao", estoque.Movimentacao);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //METODO PARA DELETAR USUARIO
        public bool excluirUsuario(String matricula)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "DELETE FROM Usuario Where matricula = " + matricula;

                SqlCommand comando = new SqlCommand(sql, conexao);

                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                return false;
            }

            return true;
            
        }

        //METODO PARA DELETAR COLABORADOR
        public bool excluirColaborador(String codColaborador)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "DELETE FROM Colaborador Where codColaborador = " + codColaborador;

                SqlCommand comando = new SqlCommand(sql, conexao);

                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO PARA DELETAR PRODUTO
        public bool excluirProduto(String codProduto)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "DELETE FROM Produto Where codProduto = " + codProduto;

                SqlCommand comando = new SqlCommand(sql, conexao);

                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //Metodo insere Fornecedor
        public bool insertFornecedor(Fornecedor fornecedor)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Fornecedor(codFornecedor, razaoSocial, cnpj, telefone, endereco, numero, bairro, cidade, estado, cep) " +
                             " values (@codFornecedor, @razaoSocial, @cnpj, @telefone, @endereco, @numero, @bairro, @cidade, @estado, @cep) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codFornecedor", fornecedor.CodFornecedor);
                comando.Parameters.AddWithValue("razaoSocial", fornecedor.RazaoSocial);
                comando.Parameters.AddWithValue("cnpj", fornecedor.Cnpj);
                comando.Parameters.AddWithValue("telefone", fornecedor.Telefone);
                comando.Parameters.AddWithValue("endereco", fornecedor.Endereco);
                comando.Parameters.AddWithValue("numero", fornecedor.Numero);
                comando.Parameters.AddWithValue("bairro", fornecedor.Bairro);
                comando.Parameters.AddWithValue("cidade", fornecedor.Cidade);
                comando.Parameters.AddWithValue("estado", fornecedor.Estado);
                comando.Parameters.AddWithValue("cep", fornecedor.Cep);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //METODO PARA INSERIR NOVO CLIENTE
        public bool insertCliente(Cliente cliente)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "insert into Cliente(codCliente, razaoSocial, cnpj, telefone, endereco, numero, bairro, cidade, estado, cep) " +
                             " values (@codCliente, @razaoSocial, @cnpj, @telefone, @endereco, @numero, @bairro, @cidade, @estado, @cep) ";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codCliente", cliente.CodCliente);
                comando.Parameters.AddWithValue("razaoSocial", cliente.RazaoSocial);
                comando.Parameters.AddWithValue("cnpj", cliente.Cnpj);
                comando.Parameters.AddWithValue("telefone", cliente.Telefone);
                comando.Parameters.AddWithValue("endereco", cliente.Endereco);
                comando.Parameters.AddWithValue("numero", cliente.Numero);
                comando.Parameters.AddWithValue("bairro", cliente.Bairro);
                comando.Parameters.AddWithValue("cidade", cliente.Cidade);
                comando.Parameters.AddWithValue("estado", cliente.Estado);
                comando.Parameters.AddWithValue("cep", cliente.Cep);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //METODO PARA DELETAR FORNECEDOR
        public bool excluirFornecedor(String codFornecedor)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "DELETE FROM Fornecedor Where codFornecedor = " + codFornecedor;

                SqlCommand comando = new SqlCommand(sql, conexao);

                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO PARA DELETAR FORNECEDOR
        public bool excluirCliente(String codCliente)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "DELETE FROM Cliente Where codCliente = " + codCliente;

                SqlCommand comando = new SqlCommand(sql, conexao);

                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO PARA DELETAR TITULO
        public bool excluirTituloPagar(String codTitulo)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "DELETE FROM Titulo_Pagar Where codTitulo = " + codTitulo;

                SqlCommand comando = new SqlCommand(sql, conexao);

                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO PARA DELETAR TITULO
        public bool excluirTituloReceber(String codTitulo)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = "DELETE FROM Titulo_Receber Where codTitulo = " + codTitulo;

                SqlCommand comando = new SqlCommand(sql, conexao);

                comando.ExecuteNonQuery();
            }
            catch (Exception)
            {
                return false;
            }

            return true;

        }

        //METODO PARA ATUALIZAR FORNECEDOR
        public Boolean updateFornecedor(Fornecedor fornecedor)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = " UPDATE Fornecedor SET codFornecedor = @codFornecedor, razaoSocial = @razaoSocial, cnpj = @cnpj, " +
                                                   " telefone = @telefone, endereco = @endereco, numero = @numero, bairro = @bairro, cidade = @cidade," +
                                                   " estado = @estado, cep = @cep " +
                             " WHERE codFornecedor = '" + fornecedor.CodFornecedor + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codFornecedor", fornecedor.CodFornecedor);
                comando.Parameters.AddWithValue("razaoSocial", fornecedor.RazaoSocial);
                comando.Parameters.AddWithValue("cnpj", fornecedor.Cnpj);
                comando.Parameters.AddWithValue("telefone", fornecedor.Telefone);
                comando.Parameters.AddWithValue("endereco", fornecedor.Endereco);
                comando.Parameters.AddWithValue("numero", fornecedor.Numero);
                comando.Parameters.AddWithValue("bairro", fornecedor.Bairro);
                comando.Parameters.AddWithValue("cidade", fornecedor.Cidade);
                comando.Parameters.AddWithValue("estado", fornecedor.Estado);
                comando.Parameters.AddWithValue("cep", fornecedor.Cep);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //METODO PARA ATUALIZAR CLIENTE
        public Boolean updateCliente(Cliente cliente)
        {
            try
            {
                SqlConnection conexao = new SqlConnection(caminho);
                conexao.Open();

                String sql = " UPDATE Cliente SET codCliente = @codCliente, razaoSocial = @razaoSocial, cnpj = @cnpj, " +
                                                   " telefone = @telefone, endereco = @endereco, numero = @numero, bairro = @bairro, cidade = @cidade," +
                                                   " estado = @estado, cep = @cep " +
                             " WHERE codCliente = '" + cliente.CodCliente + "'";

                SqlCommand comando = new SqlCommand(sql, conexao);
                comando.Parameters.AddWithValue("codCliente", cliente.CodCliente);
                comando.Parameters.AddWithValue("razaoSocial", cliente.RazaoSocial);
                comando.Parameters.AddWithValue("cnpj", cliente.Cnpj);
                comando.Parameters.AddWithValue("telefone", cliente.Telefone);
                comando.Parameters.AddWithValue("endereco", cliente.Endereco);
                comando.Parameters.AddWithValue("numero", cliente.Numero);
                comando.Parameters.AddWithValue("bairro", cliente.Bairro);
                comando.Parameters.AddWithValue("cidade", cliente.Cidade);
                comando.Parameters.AddWithValue("estado", cliente.Estado);
                comando.Parameters.AddWithValue("cep", cliente.Cep);

                comando.ExecuteNonQuery();

            }
            catch (Exception)
            {
                return false;
            }

            return true;
        }

        //METODO RETORNA UM REGISTRO TENDO COM PARAMETRO O CODFORNECEDOR
        public Fornecedor getFornecedor(String codFornecedor)
        {
            Fornecedor fornecedor = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Fornecedor WHERE codFornecedor = '" + codFornecedor + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                fornecedor = new Fornecedor();

                fornecedor.CodFornecedor = dr[0].ToString();
                fornecedor.RazaoSocial = dr[1].ToString();
                fornecedor.Cnpj = dr[2].ToString();
                fornecedor.Telefone = dr[3].ToString();
                fornecedor.Endereco = dr[4].ToString();
                fornecedor.Numero = dr[5].ToString();
                fornecedor.Bairro = dr[6].ToString();
                fornecedor.Cidade = dr[7].ToString();
                fornecedor.Estado = dr[8].ToString();
                fornecedor.Cep = dr[9].ToString();

            }

            return fornecedor;
        }

        //METODO RETORNA UM REGISTRO TENDO COM PARAMETRO O CODCLIENTE
        public Cliente getCliente(String codCliente)
        {
            Cliente cliente = null;

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Cliente WHERE codCliente = '" + codCliente + "'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                cliente = new Cliente();

                cliente.CodCliente = dr[0].ToString();
                cliente.RazaoSocial = dr[1].ToString();
                cliente.Cnpj = dr[2].ToString();
                cliente.Telefone = dr[3].ToString();
                cliente.Endereco = dr[4].ToString();
                cliente.Numero = dr[5].ToString();
                cliente.Bairro = dr[6].ToString();
                cliente.Cidade = dr[7].ToString();
                cliente.Estado = dr[8].ToString();
                cliente.Cep = dr[9].ToString();

            }

            return cliente;
        }

        //METODO RETORNA O CODFORNECEDOR DO FORNECEDOR TENDO COM PARAMETRO A RAZAO SOCIAL
        public String getCodFornecedor(String razaoSocial)
        {
            String codFornecedor = "";

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT codFornecedor FROM Fornecedor WHERE razaoSocial LIKE '%" + razaoSocial + "%'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            if (dr.Read())
            {
                codFornecedor = dr[0].ToString();
            }

            return codFornecedor;
        }

        //METODO RETORNA O CODCLIENTE DO CLIENTE TENDO COM PARAMETRO A RAZAO SOCIAL
        public String getCodCliente(String razaoSocial)
        {
            String codCliente = "";

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT codCliente FROM Cliente WHERE razaoSocial LIKE '%" + razaoSocial + "%'";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            if (dr.Read())
            {
                codCliente = dr[0].ToString();
            }

            return codCliente;
        }

        //METODO RETORNA LISTA DE FORNECEDOR
        public ArrayList getFornecedorByWhere(String codFornecedor, String razaoSocial, String CNPJ)
        {
            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Fornecedor";

            if(!codFornecedor.Equals("") || !razaoSocial.Equals("") || !CNPJ.Equals(""))
            {
                sql += " WHERE 1 = 1 ";//GAMBIARRA...KKK

                if (!codFornecedor.Equals(""))
                {
                    sql += " AND codFornecedor = " + codFornecedor;
                }

                if(!razaoSocial.Equals("")){
                    sql += " AND razaoSocial LIKE '%" + razaoSocial + "%'";
                }

                if (!CNPJ.Equals(""))
                {
                    sql += " AND cpnj = " + CNPJ;
                }
            }

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                Fornecedor fornecedor = carregarFornecedor(dr);
                lista.Add(fornecedor);
            }

            return lista;
        }

        //METODO RETORNA LISTA DE CLIENTE
        public ArrayList getClienteByWhere(String codCliente, String razaoSocial, String CNPJ)
        {
            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Cliente";

            if (!codCliente.Equals("") || !razaoSocial.Equals("") || !CNPJ.Equals(""))
            {
                sql += " WHERE 1 = 1 ";//GAMBIARRA...KKK

                if (!codCliente.Equals(""))
                {
                    sql += " AND codCliente = " + codCliente;
                }

                if (!razaoSocial.Equals(""))
                {
                    sql += " AND razaoSocial LIKE '%" + razaoSocial + "%'";
                }

                if (!CNPJ.Equals(""))
                {
                    sql += " AND cpnj = " + CNPJ;
                }
            }

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                Cliente cliente = carregarCliente(dr);
                lista.Add(cliente);
            }

            return lista;
        }

        //METODO PARA CARREGAR FORNECEDOR NA ENTIDADE
        private Fornecedor carregarFornecedor(SqlDataReader dr)
        {
            Fornecedor fornecedor = new Fornecedor();

            fornecedor.CodFornecedor = dr[0].ToString();
            fornecedor.RazaoSocial = dr[1].ToString();
            fornecedor.Cnpj = dr[2].ToString();
            fornecedor.Telefone = dr[3].ToString();
            fornecedor.Endereco = dr[4].ToString();
            fornecedor.Numero = dr[5].ToString();
            fornecedor.Bairro = dr[6].ToString();
            fornecedor.Cidade = dr[7].ToString();
            fornecedor.Estado = dr[8].ToString();
            fornecedor.Cep = dr[9].ToString();

            return fornecedor;
        }

        //METODO PARA CARREGAR CLIENTE NA ENTIDADE
        private Cliente carregarCliente(SqlDataReader dr)
        {
            Cliente cliente = new Cliente();

            cliente.CodCliente = dr[0].ToString();
            cliente.RazaoSocial = dr[1].ToString();
            cliente.Cnpj = dr[2].ToString();
            cliente.Telefone = dr[3].ToString();
            cliente.Endereco = dr[4].ToString();
            cliente.Numero = dr[5].ToString();
            cliente.Bairro = dr[6].ToString();
            cliente.Cidade = dr[7].ToString();
            cliente.Estado = dr[8].ToString();
            cliente.Cep = dr[9].ToString();

            return cliente;
        }

        //METODO CARREGA LISTA DE FORNECEDORES
        public ArrayList getFornecedores()
        {
            
            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Fornecedor";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                Fornecedor fornecedor = carregarFornecedor(dr);
                lista.Add(fornecedor);
            }

            return lista;

        }

        //METODO CARREGA LISTA DE CLIENTES
        public ArrayList getClientes()
        {

            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Cliente";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                Cliente cliente = carregarCliente(dr);
                lista.Add(cliente);
            }

            return lista;

        }

        //METODO CARREGA MOVIMENTACAO DE ESTOQUE
        public ArrayList getMovimentacao(String filtro)
        {
            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Estoque_Relatorio ";

            if(!filtro.Equals("")){
                sql += "WHERE movimentacao LIKE '%" + filtro + "%'";
            }

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                EstoqueRelatorio produtoEstoque = new EstoqueRelatorio();

                produtoEstoque.CodProduto = dr[0].ToString();
                produtoEstoque.Descricao = dr[1].ToString();
                produtoEstoque.Quantidade = dr[2].ToString();
                produtoEstoque.ValorUnitario = dr[3].ToString();
                produtoEstoque.ValorTotal = dr[4].ToString();
                produtoEstoque.Movimentacao = dr[5].ToString();

                lista.Add(produtoEstoque);

            }

            return lista;
        }

        //METODO CARREGA LISTA DE PRODUTO NO ESTOQUE
        public ArrayList getEstoque()
        {
            ArrayList lista = new ArrayList();

            SqlConnection conexao = new SqlConnection(caminho);
            conexao.Open();

            String sql = "SELECT * FROM Estoque";

            SqlCommand comando = new SqlCommand(sql, conexao);
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                Estoque produtoEstoque = new Estoque();

                produtoEstoque.CodProduto = dr[0].ToString();
                produtoEstoque.Descricao = dr[1].ToString();
                produtoEstoque.Quantidade = dr[2].ToString();
                produtoEstoque.ValorUnitario = dr[3].ToString();
                produtoEstoque.ValorTotal = dr[4].ToString();

                lista.Add(produtoEstoque);

            }

            return lista;
        }

    }
}
